package hasthi.actuators;

import hasthi.actuators.actions.ActionCallback;
import hasthi.common.HasthiException;
import hasthi.decision.Enviorment;
import hasthi.metamodel.resource.ManagedResource;

import java.util.List;

public interface ActionCenter {
    public void init(ActionContext actionContext) throws HasthiException;
    
    public abstract void signal(String signal, String... properties);

    public abstract void invoke(ManagedResource resource, String operation, String soapAcion,
            String... parameters) throws HasthiException;

    public abstract void setProperty(ManagedResource resource, String name, String value)
            throws HasthiException;

    public abstract List<String> getOverloadedServices();

    public abstract List<String> getOverloadedServiceHosts();

    public abstract void createService(String serviceName) throws HasthiException;

    public abstract void invoke(ManagementAction action) throws HasthiException;
    
    public abstract void invoke(ManagementAction action,ActionCallback callback) throws HasthiException;

    public abstract void planAndExecuate() throws HasthiException;

    public abstract void setPlanning(boolean planning);

    public abstract ActionContext getActionContext();
    
    public Enviorment getEnviorment();
    
    public Object get(String key) ;

    public Object put(String key, Object value);
    
    public void remove(String key);

}